[스프링부트] [JAVA] [입문] 1. 프로젝트 생성 및 환경설정
업데이트:
Spring Boot 프로젝트 생성
웹개발을 하기위해 가장 많이 사용되는 Spring Boot를 공부해보고자 한다.
공부하기에 앞서 필요한 여러가지 환경설정과 설치파일을 준비해보자.
< 사전 준비물 >
- Java 11설치
- IDE : IntelliJ 또는 Eclipse ( 해당 포스트는 IntelliJ를 사용한다 )
스프링 부트 스타터 사이트로 이동하여 스프링 프로젝트 생성 https://start.spring.io/
- Project : Gradle Project ( 요즘에는 거의 Gradle을 사용 )
- Spring Boot : 2.6.6
- Group : 보통 기업에서는 기업 도메인을 적는데 우리는 아무거나 적어도 된다
- Artifact : 프로젝트명을 적어주면 된다
- Name, Description, Package name : 알아서 적어주면 된다.
- Dependencies : Spring Web, Thymeleaf
[참고]
Spring Web은 웹프로젝트를 만들기 위한 라이브러리 이다.
Thymeleaf는 html을 만들어주는 템플릿 엔진이다. 프로젝트 마다 여러 종류를 사용할 수 있지만 여기서는 Thymeleaf를 쓰겠다. Spring Boot 버전은 업그레이드 됨에 따라 변경될 수 있다. SNAPSHOT이나 M1 같은 미정식 버전을 제외하고 사용하면 된다.
이렇게 스프링 프로젝트를 세팅 한 뒤에 원하는 폴더에 생성해주면 된다.
이후 IntelliJ에서 생성한 스프링 프로젝트를 실행해주면 된다.
생성된 코드 확인
build.gradle
// 필요한 플러그인을 땡겨오는 용도
plugins {
id 'org.springframework.boot' version '2.6.6'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'hello'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11' // Java 11
repositories {
mavenCentral()
}
// 처음에 Dependecies 가져온것들
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
tasks.named('test') {
useJUnitPlatform()
}
- 스프링 부트 메인 실행 후 동작을 확인할 수 있다.
- IntelliJ자체에서도 확인가능하지만 로컬환경에서 확인이 가능하다.
- http://localhost:8080
HelloSpringApplication.java
package hello.hellospring;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloSpringApplication {
// HelloSpringApplication 클래스를 실행시키는 코드
public static void main(String[] args) {
SpringApplication.run(HelloSpringApplication.class, args);
}
}
위의 코드가 main 자바 파일이다. 이를 실행시킨뒤 로컬 서버에 접근하면 메인페이지를 볼 수 있다.
실행결과 ( http://localhost:8080 )
기본설정 그대로 실행했을때는 위와 같은 화면이 나왔다면 성공!
※ IntelliJ 대신 자바로 직접 실행하기 (참고)
- 현재 IntelliJ는 Gradle을 통해서 실행하는 것이 기본설정인데, 이는 실행속도가 느리다. 그래서 자바로 바로 실행 할 수 있도록 설정을 변경해주는 것이 좋다!
- Setting -> Build,Execution,Deployment -> Build Tools -> Gradle
- Build and run using : Gradle -> IntelliJ IDEA
- Run tests using : Gradle -> IntelliJ IDEA
View 환경설정
Welcome Page 만들기
이제 메인페이지를 만들어서 띄워보자! html을 이용하여 간단하게 만들어보았다.
파일경로는 main/resources/static
에 넣어주면 되는데 이곳에 html파일을 넣어주면 자동으로 Welcome Page로 지정해준다.
resources/static/index.html
<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>
결과화면
이런 결과화면이 나온다면 성공이다!
Controller 와 View
웹페이지의 컨트롤러를 만들기 위해 main/java/hello.spring
위치에 controller라는 폴더를 하나 생성해주고 HelloController.java
라는 파일을 하나 만들어 준다.
/HelloController.java
package hello.hellospring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class HelloController {
// 웹어플리케이션에 '/hello'라고 들어오면 Mapping된 메소드를 호출해준다.
// 여기서는 index.html에 hello라는 단어의 하이퍼링크를 /hello로 달아줬기때문에 hello링크를 클릭했을 때를 말한다.
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","hello!!");
return "hello";
// 컨트롤러에서 리턴값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리한다.
// resources:templates/ +{ViewName} + .html }
}
@GetMapping("hello")
의 의미는 localhost:8080/hello 요청이 들어오면 아래의 함수를 실행하라고 해석할 수 있다.model.addAttribute("data", "hello")
에서 data는 key값이고 hello!!는 value를 의미한다.- Controller에서 리턴값으로 반환된 문자 hello는 좀 뜬금없게 느껴지는데 이는 스프링에서
src/main/resources
의templates
에서hello
라는 이름의 View를 찾아서 반환해준다는 뜻이다. resources:templates/ +{ViewName} + .html
resources/templates/hello.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org"> <!-- thymeleaf 문법을 쓸수 있도록 넣어줌 -->
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<!-- 여기서 data는 controller의 model의 key값 -->
<!-- th는 thymeleaf의 문법 -->
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
</body>
</html>
Controller에서 hello를 return했으므로 hello.html을 작성해봤는데
<p th:text="'안녕하세요. ' + ${data}" >안녕하세요. 손님</p>
여기서 ${data}
는 HelloController.java
의 모델에서 사용한 value값을 가져오는데
public String hello(Model model){
model.addAttribute("data","hello!!");
return "hello";
key값 data의 value인 “hello!”를 반환한다.
동작 환경
- 컨트롤러에서 return “hello”를 한다.
resources/templates/hello.html
을 찾아가서 렌더링을 한다- 이때 찾는 과정은 viewResolver가 자동으로 해준다.
- 기본 매핑경로는
resources/templates/{ViewName}.html
이다.
여기까지 스프링부트 입문 - 프로젝트 생성 및 환경설정 포스팅을 마친다.
댓글남기기